#include <iostream>
using namespace std;
int swap(int &a, int &b)
{
	int temp=a;
	a=b;
	b=temp;
	return 0;
}
int partition(int *a, int start, int end)
{    
		
	int i=start;
	int j=end;
	while(i<j)
	{
		while(i<j&&a[i]>=a[j])
		{
			j--;
		}
		swap(a[i],a[j]);
		while(i<j&&a[i]>=a[j])
		{
			i++;
		}
		swap(a[i],a[j]);
	}
	return i;
}

//int partition(int *a, int start, int end)
//{    
//	int i=start;
//	int j=end;
//	while(i<j)
//	{
//		while(i<j&&a[i]<=a[j])
//		{
//			j--;
//		}
//		swap(a[i],a[j]);
//		while(i<j&&a[i]<=a[j])
//		{
//			i++;
//		}
//		swap(a[i],a[j]);
//	}
//	return i;
//}
void quicksort(int *r, int start, int end )
{
	if (start<end)
	{
		int i=partition(r,start,end);
		//for (int i=0;i<7;i++)
		//{
		//	cout<<r[i]<<" ";
		//}
		//cout<<endl;
		quicksort(r,start,i-1);
		quicksort(r,i+1,end);

	}
}
//	
//
//}

int GetKnum(int *r, int start, int end, int k)
{
	/*k=end+1-k;*/
	int index=partition(r,start,end);
	while(k!=index)
	{

		if ((k-1)<index)
		{
			index=partition(r,start,index-1);
		}
		else
		{
			index=partition(r,index+1,end);
		}
	}
	return r[index-1];

}

int main()
{

	int a[]={23,13,49,6,31,19,28};
	//int i=sortnum(a,0,7,5);
	/*quicksort(a,0,6);

	cout<<a[4]<<endl;*/
	int result=GetKnum(a,0,6,7);
	cout<<result<<endl;

	
}